Virtual tour on electronic maps

ABSTRACT

Techniques for providing interactive maps are disclosed. According one aspect, a method for navigating an electronic map comprises: displaying an electronic map in accordance with an inquiry from a user, the electronic map including routes from one point to another point, wherein each of the routes includes one or more hotspots; displaying a navigation of the map with a selected route by the user; alerting the user when a hotspot is being approached; accessing auxiliary data associated with the hotspot when the user selects the hotspot, wherein the auxiliary data is not part of the electronic map being displayed but is obtained from an external source; and subsequently displaying from the auxiliary data an visual effect about the hotspot so that the user understands more about the selected hotspot.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of co-pending U.S. application Ser.No. 13/437,059 filed Apr. 2, 2012, which is a continuation of co-pendingU.S. application Ser. No. 10/427,410, filed on Apr. 30, 2003, which is acontinuation-in-part application of co-pending U.S. application Ser. No.10/092,813, filed on Mar. 6, 2002, now U.S. Pat. No. 6,580,441, which isa divisional application of U.S. application Ser. No. 09/287,088, filedApr. 6, 1999, now U.S. Pat. No. 6,388,688. This application is alsorelated to U.S. application Ser. No. 10/427,410, U.S. Pat. No. 6,580,441and U.S. Pat. No. 6,388,688, which are hereby fully incorporated byreference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to computer programs and,particularly, to computer systems used to navigate logical processes andvirtual environments.

2. Related Art

One method of presenting a virtual tour of a logical process is througha temporal presentation, e.g., through a film or video, or through aseries of slides, pictures, or flow diagrams. However, the drawback ofsuch a method is that the ability to jump to different parts of the touris based on time rather than on steps in the process. In addition, avirtual tour of a logical process that includes a mixture of films,videos, slides, pictures, flow diagrams, etc. may not be amenable to apurely temporal presentation.

Virtual tours of real, physical environments are commonly presentedthrough film or video. While such presentations offer high visualaccuracy, the progress of the tours is generally limited to a single,static route chosen by the photographer or editor. In other words, anobserver of the tours has none of the choices usually available tosomeone who is physically in the environment, e.g., choices such asturning one way or the other at an intersection, skipping uninterestingpaths, or proceeding directly to a favorite location. The interaction byan observer with the environment is limited to commands such as start,stop, fast forward or reverse.

A further limitation of this approach is that the observer generally hasno other context besides the image itself. That is, the limited field ofview makes it difficult for the observer to orient himself or herself ina complex environment.

For tours in virtual and logical environments, computer systems arecommonly used to render images from models representing the virtual andlogical environments. As opposed to videotaped presentations, suchsystems can be highly interactive since the images are rendered in realtime. There is, however, a tradeoff between cost and visual accuracy.Computer systems capable of rendering very high-resolution images inreal time are prohibitively expensive, while more affordable systemsproduce inferior quality images. Additionally the creation of renderingcomputer systems requires highly specialized technical expertise toproduce.

SUMMARY OF THE INVENTION

The present invention relates to a computer system that allowsinteractive navigation and exploration of logical processes. Thecomputer system employs a data architecture comprising a network ofnodes connected by branches. Each node in the network represents adecision point in the logical process that allows a user of the computersystem to select the next step in the process, and each branch in thenetwork represents a step or a sequence of steps in the logical process.

The network is constructed directly from the target logical process.Navigation data such as image frame sequences, steps in the logicalprocess, and other related information are associated with the elementsof the network. This establishes a direct relationship between steps inthe process and the data that represents them. From such anorganization, the user may tour the process, viewing the imagesequences, pictures, diagrams, and/or audio associated with each stepand choosing among different steps or paths at will.

In addition to navigating through the environment and process, the usermay also access auxiliary information that is related to particularpoints of interest. This auxiliary information can be of varying forms:video, audio, still images, diagrams, tables, other applications, etc.Such information is linked to a point of interest through the associatednetwork element. By associating this information with the logicalenvironment, the computer system of the present invention is able toprovide the observer with additional information on the logical processand related processes.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram that illustrates the architecture of theprincipal design constructs of an embodiment of the present invention;

FIG. 2 illustrates an example of the network of nodes and branches thatis the underlying representation of the navigation model;

FIG. 3 illustrates one possible map that can be realized from thenetwork shown in FIG. 2;

FIG. 4 is a functional flow diagram that illustrates the logic andactions of the image frame sequence processing function;

FIGS. 5 a, 5 b, and 5 c illustrate respectively the rotation of pathvectors from absolute to user-relative coordinates;

FIG. 6 is a functional flow diagram that illustrates the process ofinitializing a new branch for playback;

FIG. 7 illustrates the calculation of branches and image frames for theBrowse event;

FIG. 8 illustrate the hardware and software structure of a computersystem, in accordance to an embodiment of the invention;

FIG. 9 illustrates the derivation of the software classes that comprisethe application library;

FIG. 10 illustrates the derivation of authoring classes from theapplication library;

FIGS. 11-16 show respectively a window displayed on a screen of adisplay device of the computer system of FIG. 8, at successive pointsduring navigation of a virtual environment;

FIGS. 17-22 show respectively a window displayed on a screen of adisplay device of the computer system of FIG. 8, at successive pointsduring authoring of a virtual environment;

FIG. 23 illustrates the architecture of the principal design constructs,in accordance with some embodiments of the present invention;

FIG. 24 is a functional flow diagram that illustrates the process ofmapping a logical process, in accordance with some embodiments of theinvention; and

FIG. 25 shows a window displayed on a screen of a display device of thecomputer system of FIG. 8 during navigation of a logical process.

DETAILED DESCRIPTION OF THE INVENTION

As disclosed herein, the present invention includes a method and acomputer software system for composing and executing interactive toursof logical processes and spatial environments. FIG. 8 illustrates thehardware and software context of the present invention. The computerhardware specified is a representative of modern multimedia computersystems. Such systems contain a central processing unit (CPU) andmemory, a video card to generate images, and a sound card to generatesound. The images are displayed on an electronic computer displaymonitor. One example of a suitable CPU and memory for the computersystem is a 400 Mhz Pentium, Celeron, or other compatible processor withat least 64 MB RAM. The display must be capable of at least 16-bitcolor.

The computer hardware further includes a keyboard and pointing devicefor data input. As is understood by those skilled in the art, thepointing device may be a mouse, trackball, joystick, or other similardevice. The computer system further includes a mass storage deviceand/or a network interface. Either a mass storage device or a computernetwork may be used to store large data such as image files. Suitablemass storage devices will have the characteristics of very largecapacity as well as very fast, random access. An example of a suitablemass storage device is a CD-ROM drive. An example of a suitable computernetwork is the World Wide Web.

The software context described in FIG. 8 includes a computer operatingsystem and several service layers of computer software. Examples ofsuitable operating systems are Windows 98, Windows 2000, and Windows XP,available from Microsoft Corporation of Redmond, Wash. The presentinvention requires services provided by three software serviceapplications, NetShow, DirectShow, and DirectX/Direct3D, also availablefrom Microsoft Corporation. As illustrated in FIG. 8, the applicationsoftware of the present invention has interfaces with each of thesethree service applications.

Those skilled in the art realize that other hardware and/or softwareplatforms can be used in lieu of the ones described herein in accordanceto the principles of the present invention. Accordingly, the inventionis not limited to any particular hardware or software platform.

FIG. 1 illustrates an architecture according to an embodiment of thepresent invention. Rectangles in the figure identify design constructs,while arrows between rectangles identify relationships betweenconstructs. As illustrated by the legend in the lower right end cornerof FIG. 1, arrows with a single head on each end (e.g., arrow 121)indicate a one-to-one relationship between corresponding constructs,while arrows with a single head on one hand and a double head on theother end (e.g., arrow 123) indicate a one-to-many relationship betweencorresponding constructs.

Documents 101 are the primary construct of the architecture,representing a complete navigational model. Views 102 display someaspect of the document in a window of the computer display. Each view102 is typically associated with a display window. Relationship 123indicates that a single document 101 may be displayed using multipleviews 102. Relationship 125 indicates that three distinct types of viewsare used: main views 105, map views 106, and popup views 107. In oneembodiment, main view 105 displays image frame sequences, stillpictures, text, audio, etc. associated with each path or step on a tour,as illustrated by arrow 128. Main view 105 also contains user controls109, as illustrated by arrow 129. Map view 106, in turn, displays aninteractive map of the environment, including tour paths or steps,decision points or intersections, and points of interest (HotSpots) thatallow users of the computer system to access auxiliary information.Popup views 107 display auxiliary data 110 associated with HotSpots, asillustrated by arrow 130.

Each document 101 may manage multiple streams 103, as illustrated byarrow 122. Each stream 103, in turn, provides data to a view 102, asillustrated by arrow 121. The data is contained in one or more streamfiles, whose names are stored in model database 104. Each document 101is associated with a single model database 104 that contains thecomplete data for the document's navigation model, as illustrated byarrow 124. Model database 104 contains multiple model elements 108 thatmake up the navigation model, as illustrated by arrow 126. Relationship132 indicates that four kinds of model elements are used. Nodes 118represent intersections or decision points. Pairs of nodes 118 areconnected by branches 119 that represent paths between intersections orsteps in a process, as illustrated by arrow 135. A single node 118 mayserve as a connecting point for one or more branches 119. HotSpots 120represent points of interest that enable users to access auxiliary data110. HotSpots are placed along branches 119, as illustrated by arrow137. Branch links 117 allow users to transition from one model documentto another, as illustrated by arrow 131. Branch links 117 allowtraversal between independent navigation models, represented bydifferent documents. Each model element 108 is displayed in a map view106 as an element of the interactive map, as illustrated by arrow 127.

Relationship 133 indicates that auxiliary data 110 may take severalforms. Model links 111 are similar to branch links 117 insofar as theyconnect documents 101, as illustrated by arrow 139. However, while abranch link jumps unconditionally to a new model, replacing the currentmodel, a model link initiates a new model within the context of thecurrent model. When a new model is terminated, program execution returnsto the location of the model link. A web link 112 connects the model toa World Wide Web page. When a web link 112 is executed, the programlaunches a user's default web browser to access a URL associated withweb link 112. In such case, the browser acts as a popup view 107.Auxiliary data 110 displayed in a popup view 107 may also include singleimages 113, image frame sequences 114, audio clips 115, and textdocuments 116.

In a further embodiment, auxiliary data 110 could also be a series ofevents coming from a database or other inputs. For example, in FIG. 23,model 2328 in pool 2304 accesses web services 2326, which in turn cantrigger external events, signals, etc. 2320 that could be mapped backinto the model. In addition, the models in pool 2304 are also associatedwith databases 2314-2318. When the display of auxiliary data 110 isterminated, the execution returns to the location of HotSpot 120 in theoriginal model. Users may terminate display of auxiliary data 110 eitherby closing popup view 107 or by selecting one of the controls in mainview 105.

FIG. 2 illustrates a graphical representation of the navigational model,hereafter referred to as “the model.” The model is conceptually anetwork of nodes and connecting branches. The network is represented asa directed, cyclic graph. Each node of the graph represents an endpoint,intersection, or decision point in the model, and each branch representsa path or step in the model. For example, branch 207 connecting nodes202 and 203, represents a path or step in the model between theintersections or decision points represented by nodes 202 and 203.Furthermore, the orientation of the arrow on branch 207 indicates thatthe associated path or step is directional, leading from node 202 tonode 203.

In one embodiment, the model of FIG. 2 is displayed to the user as a mapof the environment, as shown in FIG. 3. Thus, intersections or decisionpoints 301-306 of FIG. 3 correspond to nodes 201-206 of FIG. 2. Paths orsteps on the map are not necessarily straight lines (i.e., a path orstep may be composed of multiple, connected line segments). Path or step307, constructed of two segments, corresponds to branch 207. In additionto intersections, decision points, paths, and steps, the map alsodisplays HotSpots located along paths and steps. For example, HotSpot309 is located along path 308. Since in the model HotSpots areassociated with branches, HotSpot 309 is associated with branch 208that, in turn, corresponds to path or step 308.

Each branch in the model is associated with an image sequence, stillpicture, diagram, etc. that is displayed to the user during the courseof the tour. In one embodiment, the sequence, picture, diagram, etc. isa video clip shot while moving along the associated path in the realenvironment. The sequence or picture may take other forms as well, suchas computer-animated image frames showing a path through a virtualenvironment. Image sequences, pictures, diagrams, etc. may reside on thehost computer or on remote servers located anywhere on the World WideWeb. For instance, in some embodiments, image sequences may be shownusing streaming video.

HotSpots represent a linkage between an area of a navigation frame, forexample, an object in the frame, and a set of associated data. A HotSpotis represented on the map by an icon and in the main view image displayby a bounded region of interest (ROI). Associated data with an HotSpotmay take a variety of forms including, but not limited to, videosequences, animations, audio clips, text, still images, and World WideWeb links. When a HotSpot is activated during the course of the tour,the associated data may be displayed in the main view window or a popupview window.

In another embodiment, rather than associating a HotSpot with data, theHotSpot may be a link to other elements in the map, such as a node,another HotSpot, or any location within a branch. When a user clicks onsuch a link HotSpot, the execution of the program jumps to the element,highlighting the element, and positioning the video to the appropriateframe in the multimedia sequence included for that element, if any.

HotSpots can also be database queries rather than being associated witha data file. For example, a HotSpot may contain a connection string to adatabase and a query string. When a user clicks on the HotSpot, thequery will be initiated and the result of the query will be displayed,for example, in a web page. The query may also trigger execution of aprocedure in the database.

In a further embodiment, a HotSpot may be an event. Rather than waitingfor a user to click on the HotSpot, the content of the HotSpot canautomatically pop up when the media sequence approaches that pointwithin a delta specified time.

Given the underlying structure of the data, the following sectionsdescribe the operations that manipulate the data. The present inventionprovides three classes of capabilities: initialization, authoring(constructing and modifying the model), and playback (navigating themodel).

Overview of Program Execution

When the program is started, a map view window 1120 (FIG. 11) isinitialized with intersections or decision points, paths or steps, andHotSpots retrieved from model database 104. The default startingintersection or decision point, as defined in model database 104, is theinitial start position. Main view window 1110 shows the image frameassociated with the starting intersection, as well as any path choices1130 leading away from the starting intersection.

When the user selects a choice, the path represented by that choice andany destination intersections are highlighted in map view window 1120(e.g., path 1210 and node 1220 in FIG. 12). The program plays the imagesequence associated with the path (FIG. 12). Any HotSpots on the currentpath are highlighted on the map as the image sequence nears theirlocations, and the user receives both a visual and audio queue to theHotSpot's proximity (FIGS. 13-16).

As each image frame is decoded, the program updates the current framenumber (or sample time). When the current frame approaches the end ofthe sequence range associated with the current path, the programdisplays the path choices available at the upcoming intersection (FIG.11). If the user does not select a choice before the image sequencereaches the intersection, image playback is paused. If the user doesselect a choice, image playback proceeds directly with the imagesequence for the selected path (i.e. image playback is not paused at theintersection).

The user may also control program execution in other ways. For example,the user can pause and continue image playback at will, and can jump toan arbitrary intersection or decision point by simply selecting acorresponding icon in map view window 1120. The user can also jump toany arbitrary point within a path by clicking at any place within thesegments that make up the branch. Similarly, the user can jump to anyHotSpot in the model by selecting a corresponding icon in map viewwindow 1120.

Initialization

In the case of the authoring tool, the program is initialized by simplystarting the software application. In the case of the player thefollowing operations are performed:

Startup

This operation first creates a document, a model database, a streamobject and a main view. A reference to the model database is then passedto the stream object and a reference to the stream object is added tothe document.

Load Model File

This operation opens a model database file, connects the main view tothe stream object created during Startup, creates a map view, andconnects the map view to the main view stream object. The model databasecreated during Startup is then populated with the contents of the modeldatabase file. A map is drawn using a bitmap file. Paths or steps,intersections or decision pints, and HotSpots from the model areoverlaid on the background. The start position is initially set to thestart node and the intersection or decision point icon is highlighted ona map displayed in map view window 1120.

Display Initial Image

This initial stream is opened and the image frame associated with thestarting node is displayed in main view window 1110. User controls areattached to main view window 1110 and the stream is set to Pause,waiting for user input.

Authoring

The general process of authoring is to construct a model by drawingelements in a map view window 1720 (FIG. 17) that are viewed in mainview window 1710. Construction of a model typically begins with adiagram of the environment or process, a set of image sequences, andauxiliary data. The diagram is displayed as a bitmap in map view window1720. The user defines model elements by drawing them over the diagram.For each path defined, the user selects an image sequence from main viewwindow 1710 and attaches the image sequence to the path or step. Foreach HotSpot defined, the user selects auxiliary data and associates theauxiliary data with the HotSpot. Editing operations allow the user tomodify the contents of any model element. The authoring program enablesthe user to perform the following operations:

Add Node: The user designates the location of the node on the mapdisplayed in map view window 1720. This operation draws an intersectionor decision point icon at the designated location, as shown in FIG. 17,creates the node in the model, and records the location of theintersection or decision point in the node.

Delete Node: The user selects an intersection or decision point icon onthe map displayed in map view 1720. This operation removes theintersection or decision point icon from the map and deletes theassociated node from the model. If the node is the start or end point ofany branches, the branches are deleted as well (see operation DeleteBranch).

Edit Node: The user selects an intersection or decision point icon onthe map displayed in map view window 1720. This operation then displaysa dialog 1910 (FIG. 19) wherein the user can modify any of the datacontained in the associated node 1920.

Add Branch: The user draws a path or step on the map displayed in mapview window 1720. To draw the path or step, the user starts at anyintersection or decision point and then draws a series of connected linesegments 1810 that end at another intersection or decision point (FIG.18). The shape of the path should closely approximate the shape of theactual path or step followed to produce the image sequence for the pathor step. The user then designates a start and an end of the imagesequence for the branch by selecting image frames in main window 1710.This operation creates a branch in the model, records a specification ofthe path or step (including all segments) in the branch, recordsreferences to the start and end nodes in the branch, and adds areference to the branch to its start and end nodes.

Delete Branch: The user selects a path or step on the map displayed inmap view window 1720. This operation removes the path or step from themap displayed in map view window 1720, deletes the associated branchfrom the model, and removes references to the branch from the two nodesconnected by the branch.

Edit Branch: The user first selects a path or step on the map displayedin map view window 1720. Then a dialog 2010 is displayed to allow theuser to modify any of the data contained in the associated branch 2020,as shown in FIG. 20.

Add HotSpot: The user defines a HotSpot in main window 1710 with theimage sequence paused at the desired frame (the image sequence mustalready have been assigned to a branch). The user then defines a HotSpotarea by drawing a bounding figure around a region of interest 2120 inmain view window 1710 (FIG. 21). The user specifies data to beassociated with the HotSpot in a popup dialog 2110 (FIG. 21). Thisoperation uses the offset of the image frame within the sequence tointerpolate a position along the associated path or step on the map.Based on this information a Hotspot icon 2220 is drawn at acorresponding location on the map (FIG. 22).

Delete HotSpot: The user selects a HotSpot icon on the map displayed inmap view window 1720. The HotSpot icon is removed from the map, theassociated HotSpot is deleted from the model, and any references to theHotSpot are removed from branches associated with the HotSpot.

Edit HotSpot: The user selects a HotSpot icon on the map displayed inmap view window 1720. A dialog box is then displayed to allow the userto modify any of the data contained on the corresponding HotSpot.

Add Branch Link: The user draws a path or step on the map displayed inmap view window 1720, and optionally associates the path or step with animage sequence, in the manner specified with respect to the Add Branchoperation. The user then specifies both a model document in database 104and a node within that document's model as the endpoint of the branchlink. This operation creates a branch link in the model, records aspecification of the path or step (including all segments) in the branchlink, records references to start and end nodes in the branch link, andadds a reference to the branch link to the start and end nodes. Notethat the end node is not reached by traversing the branch link; thedestination is the remote node.

Delete Branch Link: The user selects a path or step on the map displayedin map view window 1720. The path or step is removed from the map, theassociated branch link is removed from the model, and references to thebranch link are removed from the nodes connected by the branch link.

Edit Branch Link: The user selects a path or step on the map displayedin the map view 1720. A dialog box is then displayed to allow the userto modify any of the data contained in the associated branch link.

Save Model: The user is prompted for a file name, and the contents ofthe Model Database are written to the file specified by the user.

Playback

The playback capability allows a user to execute the model, resulting inan interactive tour of the virtual or logical environment. There are twoseparate functions involved in playback: processing image frames andhandling user input. Conceptually, the processing of image frames occursiteratively in the main processing loop of the program, while user inputis handled asynchronously.

The program initiates the playback capability by preparing map viewwindow 1120. First a static background image is drawn, e.g., a buildingfloor plan or other representation of a physical environment. Next theprogram draws each path or step, intersection or decision point, andHotSpot represented in model database 104. The program displays an imageframe associated with the default initial node in main view window 1110.The program further displays available choices of outgoing branches fromthe initial node. Once the user selects a branch to follow, playbackbegins. The program highlights the selected path or step and the path orstep's destination intersection or decision point on the map, and beginsreal-time display of the image frame sequence. As execution continuesalong a branch, the user may pause and execute any HotSpot encounteredalong the way. As execution reaches the end of the path or step, theprogram displays available branch choices for the upcoming node. Theuser makes a selection to continue execution.

In some embodiments, a node can be contracted such that all outgoingelements from it and all other map elements that are dependent on them(such as map-only hotspots, labels) will become invisible. Whenexpanded, the elements outgoing from the respective node and theirdependent elements will be recursively made visible. For example, when auser clicks on a contracted node, only the first level of outgoingbranches and their nodes are shown, and so on. Rather than initiallyshow the whole network, the map will expand in the direction chosen bythe user. This may be desirable when the map contains a large network ofelements and will become too cluttered if displayed as a whole. Inanother mode of operation, the user may right click the mouse on a nodeand choose to expand every outgoing elements recursively to the maximumdepth, not just the first level.

FIG. 4 is a flowchart of image frame processing operation 400. Operation400 first looks for certain conditions that require special processing.When all conditions have been handled, the next available image frame isrendered. First, stage 405 determines whether the active stream is setto a Run state. If the stream state is not set to Run, image playback ispaused and operation 400 terminates. Next, stage 410 determines whetherthe current frame is close to a HotSpot. Proximity is determined eitherwith respect to a number of frames or to a time delta. If the test istrue, in stage 415 the HotSpot is activated (e.g., by highlighting theHotSpot icon in map view window 1120 and alerting the user to theproximity of the HotSpot via a visual and/or auditory queue).

Stage 420 then determines whether the current frame is at the end of thecurrent branch. Proximity is again determined either with respect to anumber of frames or to a time delta. If the test is true, path or stepchoices are activated in stage 425. Path or step choices are the set ofpaths or steps branching out from the upcoming intersection or decisionpoint. Activation includes first calculating the set of path or stepchoices and then displaying the choices for user selection. Calculationmay be required because path choices may be displayed relative to thecurrent direction of travel (i.e. from the user's viewpoint), ratherthan according to a fixed coordinate systems. Directions relative to theuser's viewpoint are used for physical environments. Absolutecoordinates are used for logical coordinates. FIG. 5 a illustrates asample scenario where path 501 enters intersection 502, and paths 503and 504 leave intersection 502. If the current playback location isalong path 501, the choices presented to the user at intersection 502are to take either left path 503 or right path 504. FIG. 5 b illustratesthese choices from the user's viewpoint. Since display of path choicesis from viewpoint of the user, the current direction of travel by theuser corresponds to straight upscreen, 90 degrees left and rightcorrespond to straight left and right, respectively, on the screen,while 180 degrees backwards corresponds to straight downscreen.

Calculation of path choices is accomplished as follows. Recalling that abranch may represent a path of multiple line segments, the geometricalorientation of an outgoing branch is determined by a vector of a firstline segment to the branch. The orientation of an incoming branch islikewise determined by a vector of a last segment in the branch. Theincoming direction vector (representing the user's point of view) isrotated such that the vector points “up” (i.e., the vector aligns with a90 degrees angle). The difference angle between the original orientationof the incoming vector and the rotated vector is the angle by which allof the outgoing branch's vectors are rotated. In FIG. 5 c, segment BA isthe vector of the incoming branch (path 501), and segments AC and AD arethe vectors of outgoing branches 503 and 504. For each outgoingdirectional vector (xy),newX=x*cos θ−y*sin θ.newY=x*sin θ+y cos θ.

where θ is the difference angle.

As shown in FIG. 5 c, sin θ and cos θ represent components Vx and Vy,respectively, of the incoming vector, so there is no need to compute theactual difference angle.

Finally, stage 430 determines whether the current frame is the lastframe of the branch. If the test is true, stage 435 determines whetherthe user has chosen a branch to proceed on. Otherwise the stream stateis set to Pause in stage 445 and operation 400 terminates. If a branchchoice is available, the image frame sequence that corresponds to thechosen branch is initialized in stage 440, as illustrated in FIG. 6(operation 600). First, the location of the next image frame sequence isretrieved from the new branch in stage 610. Stage 615 then determineswhether the next sequence is stored in a different file from the currentsequence, in which case the stream of the old file is closed in stage620 and a stream for the new file is opened in stage 625. The programthen seeks to the first frame of the sequence, in stage 630. The path orstep on the map that corresponds to the new branch is highlighted instage 635. Finally, the program sets the stream state to Run in stage640 and operation 600 terminates.

The final step in operation 400 is to render the next image frame inmain view window 1110 in stage 450.

During image frame processing, the user can manipulate various controlsto control playback. The present invention interleaves handling ofasynchronous input events with image frame processing. The followingsections describe the processing of possible input events.

Choose Branch: Each node in the model has one or more branches leadingaway from the node. In two instances, when the tour reaches a node andwhen an input event causes a jump to a node, the user must choose abranch to follow away from the node. The program displays branch choicesavailable to the user as control icons in main view window 1110. Theuser selects one of the icons, indicating the preferred choice (FIG.12). This action triggers the Choose Branch input event. The programprocesses the event by storing the chosen branch. The choice is thenretrieved and used by the image frame processing loop as describedabove.

Jump to Node: At any point, the user may cause the image frame displayto jump to an arbitrary node in the model by selecting an associatedintersection or decision point in map view window 1120. This actiontriggers a Jump to Node input event. Upon receiving the event, theprogram identities the image frame associated with the selected node. Ifthe new image frame is stored in a different file than the previousimage frame sequence, the program closes the previous input stream andopens a stream to the new image file. The program then sets the streamstate to Pause and displays the image frame associated with the new nodein main view window 1110. Note that this image frame is the final frameof one of the incoming branches. The program highlights the associatedpath or step in map view window 1120 to help orient the user at the newlocation. The program then calculates branch choices for the node anddisplays them in a correct orientation relative to the user's view point(FIG. 11).

Jump within a Branch: Since a sequence of data or media content isinterpolated along a branch from the start node to the destination node,the user can click anywhere within the segments that make up the branchand the execution will jump to the respective frame in the data sequencethat represents that point within a path.

Jump to HotSpot: At any point, the user may cause the image framedisplay to jump to an arbitrary HotSpot in the model by selecting anassociated HotSpot icon (e.g., HotSpot icons 1320 and 1520 in FIGS. 13and 15, respectively) in map view window 1120. This action triggers aJump to HotSpot input event. The processing of this event is similar tothe processing of a Jump to Node event. The program initializes theimage frame sequence for the branch on which the HotSpot is located. Theprogram then displays a particular image frame associated with theHotSpot and highlights the new path or step on the map. Finally, theprogram overlays the HotSpot's bounded region of interest on thedisplayed video frame and highlights the HotSpot icon on the map (FIGS.13 and 15).

Open HotSpot: Whenever a HotSpot region of interest is displayed in mainview window 1110, the user may open the corresponding HotSpot byselecting the region of interest. This action triggers an ExecuteHotSpot event. Upon receiving this event, the program first determinesthe type of document (e.g. text, image, audio) referred by the HotSpot.The program then pops up an appropriate type to window to display thedata contained in the document (e.g., popup windows 1410 and 1610 inFIGS. 14 and 16, respectively). The program then opens the document anddisplays the document's contents in the pop up window. For streamingtypes of data (i.e., audio clips, video clips or image sequences), theprogram creates the stream and initializes a popup window to thestarting frame specified by the HotSpot. User controls are then attachedto the popup window and the stream state is set to Run. If the HotSpotis an interactive game or exhibit a database model file is loaded, butno map view window is created, since the map represents a conceptualflow.

Pause: At any point during playback, the user may cause the image framedisplay to stop at the current frame by selecting a Pause control 1150in main view window 1110. Upon receiving this event, the program setsthe stream state to Pause, thereby preventing the image display functionfrom displaying subsequent frames.

Play: Once playback is performed, the user may cause image frame displayto resume from the paused state by selecting Play control 1140 in mainview window 1110. Upon receiving this event, the program sets the streamstate to Run, thereby enabling the image display function to displaysubsequent frames.

Fast Forward: During image frame playback, the user may cause theprogram to increase the speed of frame display by selecting Fast Forwardcontrol 1170 in main view window 1110. Upon receiving this event, theprogram displays the remainder of the current image frame sequence(i.e., the current path or step) at double the normal speed rate (someframes may be skipped during this operation).

Fast Reverse: During image frame playback, the user may cause theprogram to display image frames in reverse order by selecting FastReverse control 1160 in main view window 1110. Upon receiving thisevent, the program displays the current image frame sequence in reverseorder at double the normal speed rate (some frames may be skipped duringthis operation).

Browse: At any point, the user may cause the program to scan through allof the image frames in the model by use of the Browse control 1180 inmain view window 1110. Browse control 1180 is continuously variable overa range of values. When Browse control 1180 is activated an event isopened that contains two values: a state value that indicates whetherthe control is engaged or disengaged and an index value that indicatesthe position of the control. Upon receiving this event, the program setsthe stream state to Pause. If the control state is Engaged, the programmaps the index value to one of the branches in the model and highlightsthe associated path on the map. If the control state is Disengaged, theprogram maps the index value and highlights a path or step as describedabove. The program further calculates a particular image frame withinthe branch's frame segment, retrieves that frame, and displays the framein main view window 1110.

The image frame calculation is based on an arbitrary serial ordering ofall branches in the model. This function maps the range of Browse indexvalues over the resulting serial sequence. A specific index value isthen mapped to an offset within a specific branch. The image frame atthat offset in the branch's associated image frame sequence is thenidentified. FIG. 7 illustrates this function. Paths 705, 706, and 707represent the branches of a simple model. They are associated with framesequences 702, 703, and 704, respectively. A range of index values 702maps to the three sequences, as shown in FIG. 7. For example, an indexvalue of 60 falls within the sub-range that maps to sequence 703, andthe program highlights path 706 accordingly. Once the offset of thegiven index value within the sub-range is calculated, it isstraightforward to map to frame 5 in frame sequence 703.

Search: Each element in the network may have a unique ID that can beassociated with keywords, metadata, etc. Standard searches can beperformed on the data. The search result will carry the association anda list of items will be created, which will contain links to theelements in the model that satisfy the search criteria. Clicking on anyitem in the list will position the user to the respective node, branch,or HotSpot.

FIGS. 9 and 10 show the architecture of the application software classesthat implement the present invention. As illustrated in FIG. 9, theapplication software comprises a set of classes derived from theMicrosoft Foundation Classes (MFC), as well as application classes thatmake up a separate application library. In addition to inheritancerelationships between classes, the application specific classes arerelated to one another through pointer references. MFC-derived classes(VITAppObj, CMultiDocTemplate, CNetPlayerDoc, CNetPlayerView,CNodesView, CChildFrame, and CPlayCtrls) provide the operations that arespecific to Microsoft Windows user interface. Examples of suchoperations are creating and deleting windows and receiving events fromthe pointing device.

Application specific library classes implement the core functionality ofthe program of the present invention. For instance, these classesimplement the playback capability. The role of each of the applicationlibrary classes is as described below:

CDocHelper: This class creates and stores each of the stream objects(CMMStream) needed by the document. This class also, keeps track of thecurrently active stream.

CNodesNetDB: This class stores and provides access to the elements ofthe model.

CStreamViewHelper: This class performs processing required for streamviews (the main view and streaming popup views). This class furtherinterprets and processes events (e.g. user controls and HotSpotinvocation) received from one of these views by class CnetPlayerView.

CMMStream: This class performs processing required for streams (e.g.opening and closing stream files).

CNodesViewHelper: This class performs processing required for the mapview. This class further interprets and processes events (e.g., jumpingto intersections) received from the map view by class CnodesView.

CNodesNetGraph: This class draws model elements in map view window 1120.

A set of application classes derived from the application libraryclasses add editing operations to the basic library operations. Forexample, these classes implement the authoring capability. FIG. 10illustrates the relationships between library classes and authoringclasses. It will be apparent to those skilled in the art that theoperations of the playback program are a subset of those of theauthoring program. That is, the authoring program contains everyoperation of the playback program, plus additional operations. Theseclasses, and the additional operations that they provide, are describedbelow:

CDocHelperA: This class provides the capability to select a bitmap file(static background) for the document. CNodesNetDBA: This class modifiesthe model database, both adding and deleting model element data.

CStreamViewHelperA: This class provides operations to modify streamviews, specifically adding HotSpots to the view. This class invokesoperations in CNodesNetDBA to update the database for new HotSpots.

CNodesViewHelperA: This class provides operations to modify the mapview, specifically adding, deleting, and editing the model elements thatare represented in map view window 1120 (e.g., nodes, branches, branchlinks). This class further invokes operations in CNodeNetGraphA toupdate the drawings of model elements in the map view.

CNodeNetGraphA: This class provides operations to modify the drawings ofmodel elements in the map view.

A further embodiment of the present invention uses the model as theunderlying representation of a video game. A video interactive game canbe scripted entirely without programming or geometric modeling byconstructing a graph of decision nodes with branches. The outgoingbranches of a node represent actions or decisions that are taken in theflow of the game. Each outgoing branch has a distinct orientationvector. The game associates each unique vector with a user interfacecontrol. For example, assume a simple control device with three buttons(e.g. a three-button mouse). All vectors in the graph that are orientedat 90 degrees could be controlled by interface button A, all vectors at45 degrees by button B, and all vectors at 180 degrees by button C.

Assume the game is initialized to start at some default node in thegraph. If from that location the user pushes button A, the game followsthe branch oriented at 90 degrees. This brings the user to the node atthe end of this branch. If at this node the user presses button B, thebranch at 45 degrees is followed, thus connecting to the next node. Ifthere is no branch that corresponds to the input, the game position isnot advanced. The game may also have disconnected nodes (nodes thatcannot be reached by a branch in the graph) or, in fact, multipledisjointed graphs. In this case, the user interface must provide thecapability to pass node identifiers to the program in order to effectjumps to disconnected nodes. Note that in this embodiment, the graph isnot displayed as a map since it functions as a decision graph, ratherthan as a map of a spatial environment.

It will be apparent to those skilled in the art that the same programcode is used to traverse the graphs in both embodiments. The differencebetween the environments resides in the format of the user interface.

Furthermore, application can be extended to support multiple players.Players navigating the same model can be represented on the map withdifferent symbols and placed on appropriate locations on the branchesthey travel on.

Application can be integrated with other collaborative programs such aschat (text or voice), (e.g., Netmeeting). Players can then open acommunication channel with other players by simply clicking on symbolscorresponding to the other players.

Furthermore, computer-generated graphics can be integrated with thevideo to allow for more complex animations composite within video tosupport interactive 3-D games.

The present invention can also be applied to training materials forcomplex procedures. For example, a video illustrating the actualprocedure taking place can be shown next to a conceptual flow of thepresentation shown in map view window 1120 with the brancheshighlighting the current stage in the procedure. The user can insertadditional types of HotSpots, such as personal notes and links to otherpertinent information to help the learning process.

FIG. 23 illustrates the architecture of another embodiment of thepresent invention. Shown is a pool of models 2304 that have been createdusing the methods specified above. Each model may encompass data fromother applications and media 2302, outside databases 2314-2318, theWorld Wide Web 2324, and web services 2326, which may be linked toexternal events, signals, etc. 2320. The pool of models 2304 are thenlinked to applications 2306-2312. Each application may also be linked tooutside databases and other information. For example, application 2310is linked to database 2316 and application 2312 is linked to a pool ofquestions 2322.

Shown in FIG. 24 is a flow diagram of a method of mapping logicalprocesses. At 2402, a logical environment is generated from a logicalprocess. The logical environment includes a plurality of nodes connectedby branches. Each node represents a decision point in the logicalprocess. Each branch represents a step, a sequence of steps or stage inthe logical process. A map of at least a portion of the nodes andbranches of the logical environment is displayed in a first window of adisplay device of a computer (2404). A visual representation of thelogical process is displayed in a second window of the display device(2406). A user is allowed to navigate through the logical environment at2408 by entering navigation commands relative to the displayed map viaat least one input device connected to the computer.

An example of a logical process that has been mapped is shown in window2500 of FIG. 25. One difference between mapping logical processes versusmapping spatial environments is that a flag is set so that the outgoingpaths from a node are expressed in absolute map coordinates rather thanbeing rotated to the incoming branch point of view. For example, therotations illustrated in FIGS. 5 a, 5 b, and 5 c need not be performed.

Map view window 2502 shows a diagram flow of a process for triageevaluation. Yellow triangle 2504 in map view window 2502 tracks the flowof the process displayed in main view window 2506. A user can jumpanywhere on a graph in map view window 2502 by clicking on a node, aHotSpot, or anywhere within a branch. When the user clicks anywherewithin the process on the topological graph, the video or data displayedin main view window 2506 is indexed to the appropriate framecorresponding to the point in the step or stage.

Hotspots window 2508 contains an explorer tree that includes all of theHotSpots or the drill down points available in a particular model. Whenthe user clicks an item in the tree, the respective HotSpot on the graphin map view window 2502 is highlighted and blinking. The user can thenclick on that HotSpot to drill down to more information. If the HotSpotis a model itself, then the explorer tree expands to show a list ofHotSpots in that model and a new window may be opened with a map of theHotSpot model. The hierarchy of models can be constructed to any depthlevel. When the model HotSpot window is closed, all of the hierarchybeneath it also closes and the explorer tree contracts the node for thatparticular model. This way the explorer tree helps navigate between thevertical layers of the application.

ControlBleeding HotSpot 2510 in map view window 2502 is highlighted andshown in window 2512. The explorer tree in hotspots window 2508 hasexpanded ControlBleeding HotSpot 2518, which is a model itself, to showall the HotSpots within it. From the ControlBleeding model in window2512, the user has highlighted and opened PressureCombination HotSpot2514, which is shown in window 2516.

In one embodiment, logical processes may be represented by two or moredisjointed graphs that are logically connected. For example, a branch inone disjointed graph may be logically linked to a node in anotherdisjointed graph. Referring to FIG. 25, call out branch 2524 in graph2522 is logically linked to node 2526 in overview graph 2520. Thus, ifauto play is set, then execution will automatically jump from summarybranch 2528 to call out branch 2524 when node 2526 is reached.

Additionally, video games or interactive exhibits can be scripted bybuilding the network of decision points and branches, with no specialprogramming.

Furthermore, stories with multiple alternative endings can be developedin accordance to the principles of the invention. For instance, anapplication can be built where kids assemble segments of the story indifferent ways to create new stories.

Virtual shopping mall and virtual stores can also be developed inaccordance to the principles of the invention. Currently on-lineshoppers must know in advance exactly what they want to search within acategory. By associating HotSpots to items shown in a moving video of areal store, the computer system of the present invention replicates areal life shopping experience, allowing, for example, impulse buying.Users can obtain more information about an item shown in the video bysimply clicking on a corresponding hot spot. The item is, in turn,associated with unique URL of a corresponding e-commerce databaseassociated with the site. Users can thus add the item to theirelectronic shopping basket.

In a further embodiment, sub-tours or specific solutions within aspatial or logical environment may be provided. For example, users maybe allowed to ask questions such as “How do I do this?” or “How do I getto point B?” Ordered lists of elements that represent a certain solutionor itinerary within a graph is generated. The nodes, branches, andHotSpots that are part of that solution will be highlighted. A sub-tourcan be created at authoring time by clicking on each element in thesequence of elements that make up the sub-tour and saving the sequenceof elements. Alternatively, the sub-tour may be deducted from usagestats taken over a period of time. For example, the program may keeptrack of the model elements that users have visited, the number of timeseach element has been visited, the time stamp, etc.

Finally, the computer system of the present invention is also suitablefor high-bandwidth applications. Video files encoded according to abroadcast quality standard such as MPEG2 can be streamed over high-speednetworks to allow virtual visits to remote sites (e.g., museums,historic sites, etc).

Embodiments described above illustrate but do not limit the invention.In particular, the invention is not limited by any particular graphicaluser interface. In fact, any graphical user interface known in the artto perform the functions described herein can be used in accordance tothe principles of the invention. In addition, the invention is notlimited to any particular hardware or software implementation. Thoseskilled in the art realize that alternative hardware softwareimplementations can be employed in lieu of the one described herein inaccordance to the principles of the present invention. Other embodimentsand variations are within the scope of the invention, as defined by thefollowing claims.

I claim:
 1. A method for navigating an electronic map, the methodcomprising: displaying on a computing device the electronic map inaccordance with an inquiry from a user, the electronic map includingroutes from one point to another point, wherein at least one of theroutes includes one or more hotspots; accepting a selection for one ofthe routes as a selected route; displaying the selected route in theelectronic map; displaying further an image sequence including aplurality of images of the selected route to demonstrate how the userwould see when going along the selected route, wherein the imagesequence is being shown and synchronized with the electronic map in amanner that a jump from one image to another image in the image sequencebeing shown leads to a corresponding leap motion in the electronic mapbeing displayed; accessing auxiliary data associated with a hotspot whenthe user selects the hotspot in the electronic map, wherein theauxiliary data is not part of the electronic map being displayed but isobtained from an external source; and displaying from the auxiliary dataan visual effect about the hotspot so that the user understands moreabout the hotspot.
 2. The method as recited in claim 1, furthercomprising: alerting the user of one of the hotspots when the one of thehotspots is being approached to allow the user to access the one of thehotspots for more information about the one of the hotspots.
 3. Themethod as recited in claim 1, wherein said accepting a selection for oneof the routes as a selected route comprises: accepting an input of adestination from the user; and highlighting a path to the destination inthe electronic map according to the selected route.
 4. The method asrecited in claim 3, further comprising: displaying a control to allowthe user to fast forward, fast backward, play, or pause the imagesequence.
 5. The method as recited in claim 1, wherein said displayingfurther an image sequence comprises: pausing automatically the imagesequence when the image sequence approaches an upcoming intersection;displaying choices available at the upcoming intersection; anddisplaying another image sequence when receiving from the user one ofthe choices, wherein the another image sequence proceeds with a selectedpath according to the one of the choices made by the user.
 6. The methodas recited in claim 1, further comprising: showing the selected routebeing progressively advanced from one point to another in the electronicmap while the image sequence is being shown; and advancing the imagesequence to show an image of a selected point in the electronic map,wherein the selected point is made manually on the electronic map by theuser.
 7. The method as recited in claim 6, further comprising: causingthe computing device to play an audible sound so that the user receivesboth a visual and audio queue when the hotspot is being approached. 8.The method as recited in claim 1, wherein at least one of the hotspotsis associated with a link to other elements in the electronic map, theelements include a node, another hotspot, or a location within a branch.9. The method as recited in claim 1, further comprising: receiving aquery from the user; performing a search pertaining to the query;displaying a collection of results including links pertaining to thequery; and displaying further information on a corresponding node, abranch or a hotspot when one of the links is activated.
 10. The methodas recited in claim 1, further comprising: allowing the user to navigatethrough the electronic map by entering a command via an input device.11. The method as recited in claim 10, wherein the command is a query,and the method further comprising: receiving the query from the user;and highlighting one of nodes, one of branches, or one of the hotspotsin the electronic map that represents an answer to the query.
 12. Themethod as recited in claim 1, wherein the electronic map is displayed ina first view, and the visual effect about the each of the hotspots isdisplayed in a second view.
 13. The method as recited in claim 12,wherein the second view is a pop-up view when the hotspot is selected bythe user.
 14. The method as recited in claim 1, further comprising:detecting a first point selected by the user in the electronic map;jumping to a second point in the electronic map from the first pointwhen the second point is selected by the user; and displaying a visualrepresentation of how the second point is reached from the first pointin the electronic map.
 15. The method as recited in claim 14, whereinsaid displaying a visual representation of how the second point isreached from the first point in the electronic map comprises: showing anavigational route from the first point to the second point.
 16. Aserver for providing an interactive map, the server comprising: aprocessor; a memory space, coupled to the processor, for storing atleast a database to be accessed and code to be executed by the processorto cause the server to perform operations of: causing a display deviceto display a portion of the interactive map generated from a logicprocess based on the database in responding to an inquiry from a user,wherein the portion of the interactive map represents a part of a realworld and includes one or more nodes, one or more branches, and one ormore of hotspots, each of the hotspots represents a point of interestthat is selectable to show details about the point of interest; causingthe display device to display an image sequence including a plurality ofimages to demonstrate how the user would see when going along a selectedroute on the interactive map, wherein the image sequence is being shownand synchronized with the electronic map in a manner that a jump fromone image to another image in the image sequence being shown leads to acorresponding leap motion in the electronic map being displayed;accessing auxiliary data associated with a hotspot when the user selectsthe hotspot, wherein the auxiliary data is not part of the interactivemap being displayed but is obtained from an external source; and causingthe display device to display from the auxiliary data an visual effectabout the hotspot so that the user understands more about hotspot. 17.The server as recited in claim 16, wherein the operations furthercomprise: accepting an input of a destination from the user; causing thedisplay device to highlight a path to the destination in the interactivemap.
 18. The server as recited in claim 17, wherein the operationsfurther comprise: causing the display device to display one of thehotspots along the path in the interactive map as the user navigates onthe interactive map near proximity of the one of the hotspots.
 19. Theserver as recited in claim 18, wherein the operations further comprise:pausing automatically the image sequence when the image sequenceapproaches an upcoming intersection; causing the display device todisplay choices available at the upcoming intersection; and causing thedisplay device to continue displaying an image sequence to proceed witha selected path according to the one of the choices made by the user.